package com.erp.controller;

import com.erp.pojo.user.User;
import com.erp.vo.Result;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("user")
public class UserController {
/**
 * 传入user实体类
 *需求:
 *  用户id为雪花id
 *  查看用户是否存在
 *  手机号:不能为空 符合手机格式
 *  密码:不能为空,密码由大小写和数据+符号组成,至少满足三种要求
 *  密码使用加密盐+md5验证
 *  用户信用等级默认设置为1
 *  登录以后状态设置为在线
 *  token使用jwt,存放用户id
 *      将token存入redis
 *输出:
 *  使用result
 *      返回登录成功以后的token
 *   如果失败 返回提示信息
 *      比如:密码不正确 为空
 * **/
//手机号密码登录
    @RequestMapping("LoginByPhoneNumberPassword")
    public Result login(@RequestBody User user) {
        return null;
    }
    /**
     *传入user
     * 需求:
     *  手机号不能为空 要符合手机格式
     *  使用验证码接口,生成验证码
     *  判断验证码是否正确
     *  登录流程:
     *      首先判断手机号是否存在
     *        不存在:抛出提示
     *          存在:登录成功
     *         token使用jwt,存放用户id
     *         将token存入redis
     *输出:
     *  登录成功以后的token
     * **/
//    手机验证码登录
        @RequestMapping("LoginByPhoneNumber")
    public Result loginByPhoneNumber(@RequestBody User user){
        return null;
    }
    /**
     * 传入user实体类
     * 需求:
     *   手机号不为空 要符合手机号格式
     *   验证码验证手机号是否为有效手机号
     *   密码不能为空
     *   二次密码不能为空
     *   两次密码输入一致
     *   是否存在此用户,如果存在此用户
     *      将密码修改为此次输入的设定的密码
     *   如果不存在此用户,就可以注册
     *      添加用户,并且设置用户的角色为普通用户
     *    在添加用户信息的时候要加分布式锁
     *      使用catch抛出异常 使其返回result信息
     * 输出:
     *   使用result
     *      返回注册成功的提示
     *      或者
     *      返回注册失败的消息提示
     * **/
//    手机号验证码注册
    @RequestMapping("RegistByPhoneNumber")
    public Result RegistByPhoneNumber(@RequestBody User user){
        return null;
    }


/**
 * 当访问请求的时候
 *      从存在redis中的token取出userid
 *      通过用户id,查询权限id
 *      通过权限id查询权限
 * 输出:
 *     使用UserDto
 *          将用户表中的用户所有信息
 *          角色名称
 *          权限列表返回
 * **/
// 根据用户id查询角色 并且查询权限
    @RequestMapping("findByUserid")
    public Result findByUserid(){
        return null;
    }


}
